/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pe.edu.unmsm.SIASS.Bean;

import Pe.edu.unmsm.SIASS.DAO.HorarioGrupoDAO;
import Pe.edu.unmsm.SIASS.DAO.ProfesorDAO;
import Pe.edu.unmsm.SIASS.DAO.UsuarioDAO;
import Pe.edu.unmsm.SIASS.DAOImpl.HorarioGrupoDAOImpl;
import Pe.edu.unmsm.SIASS.DAOImpl.ProfesorDAOImpl;
import Pe.edu.unmsm.SIASS.DAOImpl.UsuarioDAOImpl;
import Pe.edu.unmsm.SIASS.Dominio.HorarioGrupo;
import Pe.edu.unmsm.SIASS.Dominio.Profesor;
import Pe.edu.unmsm.SIASS.Dominio.Usuario;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;

/**
 *
 * @author PC-14
 */
@ManagedBean(name = "menuBean")
@SessionScoped
public class MenuBean implements Serializable {

    public List<HorarioGrupo> listaHG;
    Usuario usuario;
    private ProfesorDAO profesorDAO;
    public Profesor profesor;
    private HorarioGrupoDAO horarioGrupDAO;
    public HorarioGrupo horarGrupSelec;
    public boolean selec = true;
    public String contraAntigua = "";
    public String contraNueva = "";

    public MenuBean() {
        horarGrupSelec = new HorarioGrupo();
        FacesContext context = FacesContext.getCurrentInstance();
        Application appli = context.getApplication();
        usuario = (Usuario) appli.evaluateExpressionGet(context, "#{loginBean.usuario}", Usuario.class);

        mostrarCursos();

    }

    public void cambiarContras() {
        System.out.println("enntra a cambiar");
        if (contraAntigua.equals("") && contraNueva.equals("")) {
            System.out.println("no hay naa");
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ingrese la contraseña antigua y la nueva", null));
        } else {
            if (contraAntigua.equals("")) {
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ingrese la contraseña antigua", null));
            } else {
                if (contraNueva.equals("")) {
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ingrese la contraseña nueva", null));
                } else {
                    if (!contraAntigua.equals(usuario.getContrasena())) {
                        FacesContext context = FacesContext.getCurrentInstance();
                        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "La contraseña antigua es incorrecta, ingrese nuevamente", null));
                    } else {
                        if (contraNueva.equals(usuario.getContrasena())) {
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "La contraseña nueva es idéntica a la antigua, ingrese una contraseña diferente", null));
                        } else {
                            UsuarioDAO uDAO = new UsuarioDAOImpl();
                            usuario.setContrasena(contraNueva);
                            boolean validar = uDAO.modificarUsuario(usuario);
                            if (validar) {
                                FacesContext context = FacesContext.getCurrentInstance();
                                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Contraseña cambiada satisfactoriamente", null));
                                RequestContext.getCurrentInstance().execute("avPr.hide()");
                       
                            } else {
                                FacesContext context = FacesContext.getCurrentInstance();
                                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error al cambiar la contraseña", null));
                            }
                        }
                    }
                }
            }
        }
    }

    public void mostrarCursos() {
        horarioGrupDAO = new HorarioGrupoDAOImpl();
        Date diaActual = new Date();
        String dia = null;
        int d = diaActual.getDay();
        if (d == 1) {
            dia = "Lunes";
        } else {
            if (d == 2) {
                dia = "Martes";
            } else {
                if (d == 3) {
                    dia = "Miercoles";
                } else {
                    if (d == 4) {
                        dia = "Jueves";
                    } else {
                        if (d == 5) {
                            dia = "Viernes";
                        } else {
                            if (d == 6) {
                                dia = "Sabado";
                            } else {
                                dia = "Domingo";
                            }
                        }
                    }
                }
            }
        }
        diaActual.getDate();
        profesorDAO = new ProfesorDAOImpl();
        profesor = profesorDAO.obtenerProfesor(usuario.getPersona().getIdPersona());
        listaHG = horarioGrupDAO.listarHorarioGrupo(dia, profesor.getIdProfesor());
    }

    public void validarHorario() {
        String validar = "";
        Date d = new Date();
        //if(d.getHours()>=horarGrupSelec.getHorario().getHoraInicio().getHours() && d.getHours()<horarGrupSelec.getHorario().getHoraFin().getHours()){
        if (d.getHours() >= horarGrupSelec.getHorario().getHoraInicio().getHours()) {
            System.out.println("Correcto");
            selec = false;
        } else {
            selec = true;
            System.out.println("incorrecto");
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Solo puede registrar asistencia dentro del horario de clase", null));
        }

    }

    public List<HorarioGrupo> getListaHG() {
        return listaHG;
    }

    public void setListaHG(List<HorarioGrupo> listaHG) {
        this.listaHG = listaHG;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public HorarioGrupo getHorarGrupSelec() {
        return horarGrupSelec;
    }

    public void setHorarGrupSelec(HorarioGrupo horarGrupSelec) {
        this.horarGrupSelec = horarGrupSelec;
    }

    public boolean isSelec() {
        return selec;
    }

    public void setSelec(boolean selec) {
        this.selec = selec;
    }

    public String getContraAntigua() {
        return contraAntigua;
    }

    public void setContraAntigua(String contraAntigua) {
        this.contraAntigua = contraAntigua;
    }

    public String getContraNueva() {
        return contraNueva;
    }

    public void setContraNueva(String contraNueva) {
        this.contraNueva = contraNueva;
    }
}
